﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Classes
{
	public class Cotizacion
	{
		private int _id; //es un ID unico de consulta que se crea cuando el cliente crea una cotización
		private Cliente _cliente;
        private int _resultado;

		#region Get / Set
		public Cliente Cliente
		{
			get { return _cliente; }
			set { _cliente = value; }
		}

		public int ID
		{
			get { return _id; }
			set { _id = value; }
		}

        public int Resultado
        {
            get { return _resultado; }
            set { _resultado = value; }
        } 
		#endregion

		public Cotizacion(int id, Cliente cliente)
		{//solo para cargar la base de datos
            this.ID = id;
			this.Cliente = cliente;
		}

        public Cotizacion( Cliente cliente, DBCotizaciones dbCotizaciones)
        {// aca el id se crea solo, la DBCotizaciones esta unicamente para sacar el ultimo ID, 
         // en un caso normal se consultaria una base de datos
            this.ID= dbCotizaciones.GetLastId() + 1;
            this.Cliente = cliente;
        }

      
        //La cotización que se permite solicitar es en base a un cliente existente. Como en nuestro TP definimos 
        //que la cuota es única por cliente, para realizar la cotización es requerimiento que el cliente exista en la base de datos, 
        //y tenga vehiculos asignados. En el momento del alta se calculará el precio base menos los descuentos de la carga inicial de los vehiculos, 
        //y se le suma un 10% por cada reporte que tenga.
        //(cada cliente tiene una lista de cuotas, una por mes, que se calcula mediante un valor de base restando 
        //los descuentos de cada scoring de los vehiculos asignados)
        //
        
		public  void SolicitarCotizacionCalculo(Cliente c,DBCotizaciones dbCotizaciones, DBReportes dbReportes)
		{
            //Recorro reportes para sumar un % de recargo
                      

            for (int i = 0; i < dbReportes.VerReportes().Count(); i++)
            {
                this.Resultado = c.Cuota.Monto + 10;

            }
           
            //Recorro descuentos para el scoring

            for (int i = 0;i < c.ListVehiculo.Count();i++)
            {
                this.Resultado = Resultado - c.ListVehiculo.ElementAt(i).Scoring.Descuento;

            }

            if (this.Resultado != 0)
                ;
            else
                this.Resultado = c.Cuota.Monto;
          
		}
	}
}
